package person

/*
Go语言并没有提供默认参数，一旦一个对象有很多属性（这些属性都可以有默认值）的时候，生成一个对象会变得很麻烦。
请为下面的Person结构体实现函数式选项（Functional Options）模式。
要求提供Country，Gender，Address三个属性的设置函数。
*/
type Person struct {
	Name    string
	Age     int
	Country string
	Gender  string
	Height  int
	Address string
}

type personFunc func(*Person)

func NewPerson(name string, configs ...personFunc) *Person {
	person := &Person{
		Name:    name,
		Age:     -1,
		Country: "China",
		Gender:  "Male",
		Height:  0,
		Address: "unknown",
	}

	//TODO

	return person
}
